package co.com.inventarios.vista;

import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.io.File;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import co.com.inventarios.logica.IIvaLogica;
import co.com.inventarios.logica.IvaLogica;
import co.com.inventarios.modelo.Linea;
import co.com.inventarios.modelo.Tipoiva;
import co.com.inventarios.modelo.Vinculado;
import co.com.inventarios.utils.MessageBundleLoader;
import co.com.inventarios.utils.SessionUtil;
import co.com.inventarios.utils.SessionVars;
import co.com.inventarios.utils.Utilidades;

import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.context.effects.Highlight;
import com.icesoft.faces.context.effects.JavascriptContext;

public class Ivab_MB {

	private String bcodigo;
	private String bnombre;
	private Long activobd;
	private boolean bactivo;
	private Double bporcentaje;
	private String busquedacmb;
	private String buscar;
	private HtmlDataTable tabla;
	private List<Tipoiva> listIvas = new ArrayList<Tipoiva>();
	private IIvaLogica Iva_logica;
	private HtmlInputText txtBuscar;
	private HtmlInputText txtCodigo1;
	
    File file;
    String fileLocation;
	
	private boolean swnuevo = false;
	private HtmlInputText txtCodigo;
	private HtmlInputText txtNombre;
	private HtmlInputText txtPorcentaje;
	private String selectedCheck;
	private HtmlCommandButton cmdedita;
	private HtmlCommandButton cmdnuevo;
	private HtmlCommandButton cmdelimina;
	private boolean modalRendered;
	private boolean autocenter;
	private String codigoEliminar;
	private String nombreEliminar;
	private Utilidades Utils;
	private Tipoiva iva;
	

	public Ivab_MB() {
		// System.err.println("SEGUNDA____"+(String)SessionUtil.get(SessionVars.USUNOMBRE));
		// FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Usucodigo");
		// System.err.println("varrrrrrrrrrrrrrrrrrrrrrrrrr"+FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("Usucodigo"));
	}

	public String getBcodigo() {
		return bcodigo;
	}

	public void setBcodigo(String bcodigo) {
		this.bcodigo = bcodigo;
	}

	public String getBnombre() {
		return bnombre;
	}

	public void setBnombre(String bnombre) {
		this.bnombre = bnombre;
	}

	public Long getActivobd() {
		return activobd;
	}

	public boolean isSwnuevo() {
		return swnuevo;
	}

	public void setSwnuevo(boolean swnuevo) {
		this.swnuevo = swnuevo;
	}

	public Utilidades getUtils() {
		return Utils;
	}

	public void setUtils(Utilidades utils) {
		Utils = utils;
	}

	public void setActivobd(Long activobd) {
		this.activobd = activobd;
	}

	public boolean isModalRendered() {
		return modalRendered;
	}

	public void setModalRendered(boolean modalRendered) {
		this.modalRendered = modalRendered;
	}

	public boolean isAutocenter() {
		return autocenter;
	}

	public void setAutocenter(boolean autocenter) {
		this.autocenter = autocenter;
	}

	public String getcodigoEliminar() {
		return codigoEliminar;
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}

	public String getFileLocation() {
		return fileLocation;
	}

	public void setFileLocation(String fileLocation) {
		this.fileLocation = fileLocation;
	}

	public void setcodigoEliminar(String codigoEliminar) {
		this.codigoEliminar = codigoEliminar;
	}

	public String getNombreEliminar() {
		return nombreEliminar;
	}

	public void setNombreEliminar(String nombreEliminar) {
		this.nombreEliminar = nombreEliminar;
	}

	public boolean isBactivo() {
		return bactivo;
	}

	public void setBactivo(boolean bactivo) {
		this.bactivo = bactivo;
	}

	public Double getBporcentaje() {
		return bporcentaje;
	}

	public void setBporcentaje(Double bporcentaje) {
		this.bporcentaje = bporcentaje;
	}

	public Tipoiva getIva() {
		return iva;
	}

	public void setIva(Tipoiva iva) {
		this.iva = iva;
	}

	public String getBusquedacmb() {
		return busquedacmb;
	}

	public void setBusquedacmb(String busquedacmb) {
		this.busquedacmb = busquedacmb;
	}

	public String getBuscar() {
		return buscar;
	}

	public void setBuscar(String buscar) {
		this.buscar = buscar;
	}

	public HtmlDataTable getTabla() {
		return tabla;
	}

	public void setTabla(HtmlDataTable tabla) {
		this.tabla = tabla;
	}

	public HtmlInputText getTxtBuscar() {
		return txtBuscar;
	}

	public void setTxtBuscar(HtmlInputText txtBuscar) {
		this.txtBuscar = txtBuscar;
	}

	public HtmlCommandButton getCmdedita() {
		return cmdedita;
	}

	public void setCmdedita(HtmlCommandButton cmdedita) {
		this.cmdedita = cmdedita;
	}

	public HtmlCommandButton getCmdnuevo() {
		return cmdnuevo;
	}

	public void setCmdnuevo(HtmlCommandButton cmdnuevo) {
		this.cmdnuevo = cmdnuevo;
	}

	public HtmlCommandButton getCmdelimina() {
		return cmdelimina;
	}

	public void setCmdelimina(HtmlCommandButton cmdelimina) {
		this.cmdelimina = cmdelimina;
	}

	public HtmlInputText getTxtCodigo1() {
		return txtCodigo1;
	}

	public void setTxtCodigo1(HtmlInputText txtCodigo1) {
		this.txtCodigo1 = txtCodigo1;
	}

	public HtmlInputText getTxtCodigo() {
		return txtCodigo;
	}

	public void setTxtCodigo(HtmlInputText txtCodigo) {
		this.txtCodigo = txtCodigo;
	}

	public HtmlInputText getTxtNombre() {
		return txtNombre;
	}

	public void setTxtNombre(HtmlInputText txtNombre) {
		this.txtNombre = txtNombre;
	}

	public HtmlInputText getTxtPorcentaje() {
		return txtPorcentaje;
	}

	public void setTxtPorcentaje(HtmlInputText txtPorcentaje) {
		this.txtPorcentaje = txtPorcentaje;
	}

	public String getSelectedCheck() {
		return selectedCheck;
	}

	public void setSelectedCheck(String selectedCheck) {
		this.selectedCheck = selectedCheck;
	}

	public void toggleModal(ActionEvent ae) {
		modalRendered = !modalRendered;
	}

	public List<Tipoiva> getListIvas() {
		Iva_logica = new IvaLogica();
		if (listIvas.size() > 0) {
			try {
				//listIvas = Iva_logica.buscarTodosIvas();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return listIvas;
	}

	public String action_Nuevo() throws SQLException {
		try {
			// txtCodigo1.setDisabled(false);
		} catch (Exception e) {
			e.printStackTrace();
		}
		swnuevo = true;
		bcodigo = null;
		bnombre = null;
		bactivo = true;
		bporcentaje = null;
		listIvas.clear();
		SessionUtil.add(SessionVars.ESTADO, (String) "0");
		return "IvaP";
	}

	public void action_Imprimir(ActionEvent ae) {
		String reporte = "Requisicion";
		JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(),
				"window.open(\"./conexionReportes?Reporte=" + reporte
						+ "&toExcel=true\",\"conexionReportes\");");
	}

	public void action_ImprimirParametro(ActionEvent ae) {
		String reporte = "RequisicionParametro";
		JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(),
				"window.open(\"./conexionReportes?Reporte=" + reporte
						+ "&tipoDoc=" + buscar
						+ "&toExcel=false\",\"conexionReportes\");");
	}

	public void setListIvas(List<Tipoiva> listIvas) {
		this.listIvas = listIvas;
	}

	public String action_Editar() {
		//listIvas.clear();
		Iva_logica = new IvaLogica();
		SessionUtil.add(SessionVars.CODIGOID, (String) cmdedita.getValue());

		try {
			swnuevo = false;
			setIva(Iva_logica.consultarIva("ivacodigo", (String) cmdedita
					.getValue()));
			bcodigo = iva.getIvacodigo();
			bnombre = iva.getIvanombre();
			activobd = iva.getIvaactivo();

			if (activobd == 1) {
				bactivo = true;
			} else {
				bactivo = false;
			}
			bporcentaje = iva.getIvaporcen();
			//txtCodigo1.setDisabled(true);

		} catch (Exception e) {
			e.printStackTrace();
		}
		return "IvaP";
	}

	public void action_confirmacionEliminar(ActionEvent ae) {
		Iva_logica = new IvaLogica();
		setcodigoEliminar((String) cmdelimina.getValue());
		try {
			Tipoiva miIva = Iva_logica.consultarIva("ivacodigo",
					getcodigoEliminar());
			setNombreEliminar(miIva.getIvanombre());
		} catch (Exception e) {
			e.printStackTrace();
		}
		toggleModal(ae);
	}

	public void action_EliminarTabla(ActionEvent ae) {
		Iva_logica = new IvaLogica();
		toggleModal(ae);
		try {
			Iva_logica.eliminarIva(getcodigoEliminar());
			listIvas = Iva_logica.buscarTodosIvas();
			FacesContext.getCurrentInstance().addMessage("msg",
					new FacesMessage("Se actualizo satisfactoriamente"));
			getListIvas();
		} catch (Exception e) {

			// / popup no se pudo eliminar
			e.printStackTrace();
			// FacesContext.getCurrentInstance().addMessage("msg",
			// new FacesMessage(e.getMessage()));
			FacesContext
					.getCurrentInstance()
					.addMessage(
							"msg",
							new FacesMessage(
									"No se puede eliminar el registro tiene movimiento."));
		}
	}

	public void action_Buscar(ActionEvent ae) {
		listIvas.clear();
		Iva_logica = new IvaLogica();
		try {
			if (busquedacmb.equals("ivacodigo")) {
				FacesContext.getCurrentInstance().addMessage("msg",
						new FacesMessage(MessageBundleLoader.getMessage("busqueda.mensaje")+" Codigo :" + buscar));

				listIvas = Iva_logica.consultarPropiedadLike(busquedacmb,
						buscar);

			} else {
				if (busquedacmb.equals("ivanombre")) {
					FacesContext.getCurrentInstance().addMessage("msg",
							new FacesMessage(MessageBundleLoader.getMessage("busqueda.mensaje")+" Nombre :" + buscar));

					listIvas = Iva_logica.consultarPropiedadLike(busquedacmb,
							buscar);
				} else {
					FacesContext.getCurrentInstance().addMessage("msg",
							new FacesMessage(MessageBundleLoader.getMessage("busqueda.mensaje")+" Todos."));

					listIvas = Iva_logica.buscarTodosIvas();

				}
			}
		} catch (Exception e) {

			e.printStackTrace();

		}

	}

	public void validaId(ActionEvent ae) {
		try {

			iva = new Tipoiva();
			iva = Iva_logica.findById(bcodigo);
			if (iva != null) {
				FacesContext.getCurrentInstance().addMessage("msg",
						new FacesMessage("Este codigo de Iva ya existe"));
				bcodigo = "";
			} else {
				txtNombre.requestFocus();
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	// public String
	public String action_GuardarIva() throws SQLException {
		iva = new Tipoiva();
		try {
			if(swnuevo == true){
				iva = Iva_logica.findById(bcodigo);
			}else{
				iva = null;
			}

		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		if (iva != null) {
			FacesContext.getCurrentInstance().addMessage("msg",
					new FacesMessage("Este codigo de Iva ya existe"));
			bcodigo = "";
		} else {

			Iva_logica = new IvaLogica();
			if (bactivo) {
				activobd = new Long(1);
			} else {
				activobd = new Long(0);
			}
			try {
				iva = new Tipoiva();
				iva.setIvacodigo(bcodigo);
				iva.setIvanombre(bnombre);
				iva.setIvaporcen(bporcentaje);
				iva.setIvaactivo(activobd);
				menu_ppal_MB obje = (menu_ppal_MB)FacesUtils.getManagedBean("menu_ppal_MB");
				Timestamp fechora = new Timestamp(Calendar.getInstance()
						.getTimeInMillis());
				Iva_logica.grabarIva(bcodigo, bnombre, bporcentaje, activobd,obje.getMiDlluser(),fechora);
				FacesContext.getCurrentInstance().addMessage("msg",
						new FacesMessage("Se actualizo Satisfactoriamente"));

				listIvas.clear();
				listIvas.add(iva);
				return "IvaB";

			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				FacesContext.getCurrentInstance().addMessage("msg",
						new FacesMessage(e.getMessage()));
			}
		}
		return "No Guardar";

	}

	public String action_Cancelar() throws SQLException {
		return "IvaB";
	}

	public void action_Abrir(ActionEvent ae) {
		System.out.print("eeeeeeeeeeeeeeeeeeeeeeeeee"+fileLocation);
		//Utils = new Utilidades();
		//Utils.Carga_txt("xxxxx");
	}
	
}
